
#ifndef __H_SYMPHONY_TERRAINTABLE
#define __H_SYMPHONY_TERRAINTABLE

#include <map>
#include "terrain.h"



class TerrainTable {
  private:
    std::map<std::string,Terrain*>    _terrain;

  public:
    TerrainTable( void );
    ~TerrainTable( void );

    // Public accessor methods...
    std::map<std::string,Terrain*>&         terrain( void )               { return _terrain; }
    const std::map<std::string,Terrain*>&   terrain( void ) const         { return _terrain; }

    // General methods...
    void        add( Terrain* );
    Terrain*    find( const std::string& name ) const;
    std::string list( void ) const;

    static TerrainTable&  Instance( void );

};

inline TerrainTable& TerrainTable::Instance( void ) { // public static
  static TerrainTable instance;
  return instance;
}



#endif // #ifndef __H_SYMPHONY_TERRAINTABLE

